package io.gitee.kotle.android.utils

import android.graphics.Bitmap
import androidx.palette.graphics.Palette
import androidx.palette.graphics.get
import kotlin.coroutines.resume


// Palette.Swatch s = palette.getDominantSwatch();       //独特的一种
// Palette.Swatch s1 = palette.getVibrantSwatch();       //获取到充满活力的这种色调
// Palette.Swatch s2 = palette.getDarkVibrantSwatch();    //获取充满活力的黑
// Palette.Swatch s3 = palette.getLightVibrantSwatch();   //获取充满活力的亮
// Palette.Swatch s4 = palette.getMutedSwatch();          //获取柔和的色调
// Palette.Swatch s5 = palette.getDarkMutedSwatch();      //获取柔和的黑
// Palette.Swatch s6 = palette.getLightMutedSwatch();     //获取柔和的亮
/**
 * 获取调色版
 */
suspend fun Bitmap.getPalette(): Palette {
    return awaitOnIoThread {
        it.resume(Palette.from(this).generate())
    }
}

/**
 * 根据类型获取Swatch
 */
suspend fun Bitmap.getPaletteSwatch(target: androidx.palette.graphics.Target = androidx.palette.graphics.Target.MUTED): Palette.Swatch? {
    val generate = getPalette()
    return generate[target] ?: generate[androidx.palette.graphics.Target.VIBRANT]
}

/**
 * 获取dominantSwatch
 */
suspend fun Bitmap.getDominantSwatch(): Palette.Swatch? {
    return getPalette().dominantSwatch
}

/**
 * 获取主色调
 */
suspend fun Bitmap.getDominantColor(defaultColor: Int): Int {
    return getPalette().getDominantColor(defaultColor)
}